package utils

import (
	"errors"
	"im/global"
	"im/model"
	"log"

	"github.com/gin-gonic/gin"
)

// 根据token解析user信息
func ParseTokenToUser(c *gin.Context) (model.User, error) {
	var userInfo model.User
	token := c.GetHeader(global.TOKEN_HEADER)
	if token == "" {
		return userInfo, errors.New("token为空")
	}
	j := model.NewJWT()
	// parseToken 解析token包含的信息
	claims, err := j.ParseToken(token)
	if err != nil {
		userInfo = model.User{
			// ID:     claims.ID,
			Name: claims.Name,
		}
		userInfo.ID = claims.ID
	}
	return userInfo, nil
}

// 根据token获取用户id
func ParseTokenToUserId(c *gin.Context) (uint, error) {
	var userInfo model.User
	token := c.GetHeader(global.TOKEN_HEADER)
	if token == "" {
		return 0, errors.New("token为空")
	}
	j := model.NewJWT()
	// parseToken 解析token包含的信息
	claims, err := j.ParseToken(token)
	if err != nil {
		userInfo = model.User{
			// ID:   claims.ID,
			Name: claims.Name,
		}
		userInfo.ID = claims.ID
	}
	return claims.ID, nil
}

// 根据token获取用户id
func ParseUserIdByTokenData(token string) (uint, error) {
	if token == "" {
		return 0, errors.New("token为空")
	}
	j := model.NewJWT()
	// parseToken 解析token包含的信息
	claims, err := j.ParseToken(token)
	if err != nil {
		log.Println("token解析失败: ", err)
	}
	return claims.ID, nil
}
